package com.entmanage.base.collegeco.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.entmanage.common.annotation.Excel;
import com.entmanage.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

/**
 * 实习生任务书对象 collegeco_intern_task
 *
 * @author lsq
 * @date 2025-08-06
 */
@ApiModel(value = "CollegecoInternTask", description = "实习生任务书对象")
public class CollegecoInternTask extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 任务书ID，主键 */
    @ApiModelProperty(value = "任务书ID，主键")
    private Long taskId;

    /** 实习生ID，关联 hrm_intern.intern_id */
    @Excel(name = "实习生ID，关联 hrm_intern.intern_id")
    @ApiModelProperty(value = "实习生ID，关联 hrm_intern.intern_id")
    private Long internId;

    /** 用户ID，冗余便于查询 */
    @Excel(name = "用户ID，冗余便于查询")
    @ApiModelProperty(value = "用户ID，冗余便于查询")
    private Long userId;

    /** 实习总体目标（如：掌握XX技能、熟悉XX流程） */
    @Excel(name = "实习总体目标", readConverterExp = "如=：掌握XX技能、熟悉XX流程")
    @ApiModelProperty(value = "实习总体目标（如：掌握XX技能、熟悉XX流程）")
    private String internshipObjective;

    /** 实习具体内容（如：参与XX模块开发、协助XX工作） */
    @Excel(name = "实习具体内容", readConverterExp = "如=：参与XX模块开发、协助XX工作")
    @ApiModelProperty(value = "实习具体内容（如：参与XX模块开发、协助XX工作）")
    private String internshipContent;

    /** 实习阶段计划或时间安排（建议使用JSON或富文本格式） */
    @Excel(name = "实习阶段计划或时间安排", readConverterExp = "建=议使用JSON或富文本格式")
    @ApiModelProperty(value = "实习阶段计划或时间安排（建议使用JSON或富文本格式）")
    private String internshipPlan;

    /** 实习要求（如：遵守纪律、每周提交周报、完成考核） */
    @Excel(name = "实习要求", readConverterExp = "如=：遵守纪律、每周提交周报、完成考核")
    @ApiModelProperty(value = "实习要求（如：遵守纪律、每周提交周报、完成考核）")
    private String internshipRequirements;

    /** 状态：1-草稿，2-已提交，3-已审核，4-已驳回 */
    @Excel(name = "状态：1-草稿，2-已提交，3-已审核，4-已驳回")
    @ApiModelProperty(value = "状态：1-草稿，2-已提交，3-已审核，4-已驳回")
    private String status;

    /** 审核人 */
    @Excel(name = "审核人")
    @ApiModelProperty(value = "审核人")
    private String mentor;

    /** 审核人ID */
    @Excel(name = "审核人ID")
    @ApiModelProperty(value = "审核人ID")
    private Long mentorId;

    /** 审核时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "审核时间")
    private Date reviewTime;

    /** 审核备注 */
    @Excel(name = "审核备注")
    @ApiModelProperty(value = "审核备注")
    private String remarks;

    /** 删除逻辑标识 */
    @ApiModelProperty(value = "删除逻辑标识")
    private String delFlag;

    /** 部门ID */
    @Excel(name = "部门ID")
    @ApiModelProperty(value = "部门ID")
    private Long deptId;

    public void setTaskId(Long taskId)
    {
        this.taskId = taskId;
    }

    public Long getTaskId()
    {
        return taskId;
    }
    public void setInternId(Long internId)
    {
        this.internId = internId;
    }

    public Long getInternId()
    {
        return internId;
    }
    public void setUserId(Long userId)
    {
        this.userId = userId;
    }

    public Long getUserId()
    {
        return userId;
    }
    public void setInternshipObjective(String internshipObjective)
    {
        this.internshipObjective = internshipObjective;
    }

    public String getInternshipObjective()
    {
        return internshipObjective;
    }
    public void setInternshipContent(String internshipContent)
    {
        this.internshipContent = internshipContent;
    }

    public String getInternshipContent()
    {
        return internshipContent;
    }
    public void setInternshipPlan(String internshipPlan)
    {
        this.internshipPlan = internshipPlan;
    }

    public String getInternshipPlan()
    {
        return internshipPlan;
    }
    public void setInternshipRequirements(String internshipRequirements)
    {
        this.internshipRequirements = internshipRequirements;
    }

    public String getInternshipRequirements()
    {
        return internshipRequirements;
    }
    public void setStatus(String status)
    {
        this.status = status;
    }

    public String getStatus()
    {
        return status;
    }
    public void setMentor(String mentor)
    {
        this.mentor = mentor;
    }

    public String getMentor()
    {
        return mentor;
    }
    public void setMentorId(Long mentorId)
    {
        this.mentorId = mentorId;
    }

    public Long getMentorId()
    {
        return mentorId;
    }
    public void setReviewTime(Date reviewTime)
    {
        this.reviewTime = reviewTime;
    }

    public Date getReviewTime()
    {
        return reviewTime;
    }
    public void setRemarks(String remarks)
    {
        this.remarks = remarks;
    }

    public String getRemarks()
    {
        return remarks;
    }
    public void setDelFlag(String delFlag)
    {
        this.delFlag = delFlag;
    }

    public String getDelFlag()
    {
        return delFlag;
    }

    public void setDeptId(Long deptId)
    {
        this.deptId = deptId;
    }

    public Long getDeptId()
    {
        return deptId;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("taskId", getTaskId())
            .append("internId", getInternId())
            .append("userId", getUserId())
            .append("internshipObjective", getInternshipObjective())
            .append("internshipContent", getInternshipContent())
            .append("internshipPlan", getInternshipPlan())
            .append("internshipRequirements", getInternshipRequirements())
            .append("status", getStatus())
                .append("mentor", getMentor())
                .append("mentorId", getMentorId())
            .append("reviewTime", getReviewTime())
            .append("remarks", getRemarks())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .append("delFlag", getDelFlag())
            .append("createBy", getCreateBy())
            .append("updateBy", getUpdateBy())
            .append("remark", getRemark())
                .append("deptId", getDeptId())
            .toString();
    }
}
